package com.chatsystem.config;

import io.jsonwebtoken.security.Keys;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.crypto.SecretKey;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

/**
 * JWT配置类
 * 
 * @author ChatSystem
 * @version 1.0.0
 */
@Configuration
public class JwtConfig {

    @Value("${jwt.secret}")
    private String secret;

    /**
     * 创建安全的JWT密钥
     * 
     * @return 安全的密钥
     */
    @Bean
    public SecretKey jwtSecretKey() {
        try {
            // 尝试从配置的密钥创建
            byte[] keyBytes = secret.getBytes(StandardCharsets.UTF_8);
            
            // 如果密钥长度不足，生成安全的密钥
            if (keyBytes.length < 32) {
                return Keys.secretKeyFor(io.jsonwebtoken.SignatureAlgorithm.HS512);
            }
            
            return Keys.hmacShaKeyFor(keyBytes);
        } catch (Exception e) {
            // 如果出现任何问题，生成安全的密钥
            return Keys.secretKeyFor(io.jsonwebtoken.SignatureAlgorithm.HS512);
        }
    }

    /**
     * 获取Base64编码的密钥字符串
     * 
     * @return Base64编码的密钥
     */
    public String getBase64Secret() {
        return Base64.getEncoder().encodeToString(jwtSecretKey().getEncoded());
    }
} 